--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / mapExchange / metadataUtils.js
Displaying Raw • Download
meshchatx/src/frontend/js/mapExchange/metadataUtils.js b27028a7fbdb9530f658ad1661824944e16e70bf (b27028a7) Text, 5.54 KB
T8b949e// SPDX-License-Identifier: 0BSD
Tff7b72import Tb4b4b4{ Te6edf3getCenter Tb4b4b4} Tff7b72from Ta5d6ff"ol/extent"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3MCX_FILL_COLORTb4b4b4,
Te6edf3MCX_FILL_OPACITYTb4b4b4,
Te6edf3MCX_ICON_ANCHOR_XTb4b4b4,
Te6edf3MCX_ICON_ANCHOR_YTb4b4b4,
Te6edf3MCX_ICON_DATA_URLTb4b4b4,
Te6edf3MCX_ICON_HREFTb4b4b4,
Te6edf3MCX_ICON_SCALETb4b4b4,
Te6edf3MCX_STROKE_COLORTb4b4b4,
Te6edf3MCX_STROKE_WIDTHTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"./constants.js"Tb4b4b4;
Tff7b72const Te6edf3SKIP_EXTENDED Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4[
Ta5d6ff"geometry"Tb4b4b4,
Ta5d6ff"type"Tb4b4b4,
Ta5d6ff"note"Tb4b4b4,
Ta5d6ff"telemetry"Tb4b4b4,
Ta5d6ff"discovered"Tb4b4b4,
Ta5d6ff"cluster"Tb4b4b4,
Ta5d6ff"peer"Tb4b4b4,
Ta5d6ff"segmentKind"Tb4b4b4,
Ta5d6ff"bearingMetrics"Tb4b4b4,
Ta5d6ff"_measureOverlay"Tb4b4b4,
Ta5d6ff"styleUrl"Tb4b4b4,
Ta5d6ff"style"Tb4b4b4,
Te6edf3MCX_ICON_DATA_URLTb4b4b4,
Te6edf3MCX_ICON_HREFTb4b4b4,
Te6edf3MCX_ICON_SCALETb4b4b4,
Te6edf3MCX_ICON_ANCHOR_XTb4b4b4,
Te6edf3MCX_ICON_ANCHOR_YTb4b4b4,
Te6edf3MCX_STROKE_COLORTb4b4b4,
Te6edf3MCX_STROKE_WIDTHTb4b4b4,
Te6edf3MCX_FILL_COLORTb4b4b4,
Te6edf3MCX_FILL_OPACITYTb4b4b4,
Ta5d6ff"marker-color"Tb4b4b4,
Ta5d6ff"marker-size"Tb4b4b4,
Ta5d6ff"stroke"Tb4b4b4,
Ta5d6ff"stroke-width"Tb4b4b4,
Ta5d6ff"fill"Tb4b4b4,
Ta5d6ff"fill-opacity"Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
T8b949e/**
* Normalize KML-style Name/Description onto lowercase keys for export.
* @param {import("ol/Feature").default} feature
*/
Tff7b72export Tff7b72function Te6edf3normalizeFeatureMetadataPropsTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3n Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"name"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3N Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"Name"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3n Tff7b72== Tff7b72null Tff7b72|| Te6edf3n Tff7b72=== Ta5d6ff""Tb4b4b4) Tff7b72&& Te6edf3N Tff7b72!= Tff7b72null Tff7b72&& Te6edf3N Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3featureTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"name"Tb4b4b4, Te6edf3NTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3d Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"description"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3D Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"Description"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3d Tff7b72== Tff7b72null Tff7b72|| Te6edf3d Tff7b72=== Ta5d6ff""Tb4b4b4) Tff7b72&& Te6edf3D Tff7b72!= Tff7b72null Tff7b72&& Te6edf3D Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3featureTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"description"Tb4b4b4, Te6edf3DTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3t Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"title"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3nameAfterKml Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"name"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3nameAfterKml Tff7b72== Tff7b72null Tff7b72|| Te6edf3nameAfterKml Tff7b72=== Ta5d6ff""Tb4b4b4) Tff7b72&& Te6edf3t Tff7b72!= Tff7b72null Tff7b72&& Te6edf3t Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3featureTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"name"Tb4b4b4, Tff7b72typeof Te6edf3t Tff7b72=== Ta5d6ff"string" Tff7b72? Te6edf3t Tff7b72: Tffa657StringTb4b4b4(Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e/**
* @param {import("ol/Feature").default} feature
* @returns {import("ol/coordinate").Coordinate|null}
*/
Tff7b72export Tff7b72function Te6edf3getFeatureAnchorCoordinateTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3g Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3gTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3t Tff7b72= Te6edf3gTb4b4b4.Te6edf3getTypeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"Point"Tb4b4b4) Tb4b4b4{
Tff7b72return T8b949e/** @type {import("ol/geom/Point").default} */ Tb4b4b4(Te6edf3gTb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"MultiPoint"Tb4b4b4) Tb4b4b4{
Tff7b72return T8b949e/** @type {import("ol/geom/MultiPoint").default} */ Tb4b4b4(Te6edf3gTb4b4b4)Tb4b4b4.Te6edf3getPointTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"Polygon"Tb4b4b4) Tb4b4b4{
Tff7b72return T8b949e/** @type {import("ol/geom/Polygon").default} */ Tb4b4b4(Te6edf3gTb4b4b4)Tb4b4b4.Te6edf3getInteriorPointTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"MultiPolygon"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3mp Tff7b72= T8b949e/** @type {import("ol/geom/MultiPolygon").default} */ Tb4b4b4(Te6edf3gTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3mpTb4b4b4.Te6edf3getPolygonTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3getInteriorPointTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"LineString"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3c Tff7b72= T8b949e/** @type {import("ol/geom/LineString").default} */ Tb4b4b4(Te6edf3gTb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3cTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3cTb4b4b4[Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3cTb4b4b4.Te6edf3length Tff7b72/ T79c0ff2Tb4b4b4)Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff"MultiLineString"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3ml Tff7b72= T8b949e/** @type {import("ol/geom/MultiLineString").default} */ Tb4b4b4(Te6edf3gTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3line Tff7b72= Te6edf3mlTb4b4b4.Te6edf3getLineStringTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3c Tff7b72= Te6edf3lineTb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3cTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3cTb4b4b4[Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3cTb4b4b4.Te6edf3length Tff7b72/ T79c0ff2Tb4b4b4)Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3getCenterTb4b4b4(Te6edf3gTb4b4b4.Te6edf3getExtentTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3looksLikeHtmlTb4b4b4(Te6edf3sTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff/<\/?[a-z][\s\S]*>/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {import("ol/Feature").default} feature
* @returns {{ name: string, description: string, descriptionIsHtml: boolean, iconSrc: string|null, extended: { key: string, value: string }[] }|null}
*/
Tff7b72export Tff7b72function Te6edf3getDrawFeatureMetadataPayloadTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Te6edf3normalizeFeatureMetadataPropsTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3props Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getPropertiesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3propsTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"note"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3name Tff7b72= Tffa657StringTb4b4b4(Te6edf3propsTb4b4b4.Te6edf3name Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3rawDesc Tff7b72= Te6edf3propsTb4b4b4.Te6edf3descriptionTb4b4b4;
Tff7b72const Te6edf3description Tff7b72= Te6edf3rawDesc Tff7b72== Tff7b72null Tff7b72? Ta5d6ff"" Tff7b72: Tff7b72typeof Te6edf3rawDesc Tff7b72=== Ta5d6ff"string" Tff7b72? Te6edf3rawDesc Tff7b72: Tffa657StringTb4b4b4(Te6edf3rawDescTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3iconSrc Tff7b72= Te6edf3propsTb4b4b4[Te6edf3MCX_ICON_DATA_URLTb4b4b4] Tff7b72|| Te6edf3propsTb4b4b4[Te6edf3MCX_ICON_HREFTb4b4b4] Tff7b72|| Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3extended Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3kTb4b4b4, Te6edf3vTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3propsTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3k Tff7b72=== Ta5d6ff"geometry" Tff7b72|| Te6edf3kTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"_"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3SKIP_EXTENDEDTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3kTb4b4b4) Tff7b72|| Te6edf3kTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"mcx_"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3k Tff7b72=== Ta5d6ff"name" Tff7b72|| Te6edf3k Tff7b72=== Ta5d6ff"Name" Tff7b72|| Te6edf3k Tff7b72=== Ta5d6ff"description" Tff7b72|| Te6edf3k Tff7b72=== Ta5d6ff"Description"Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3vsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3v Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3vs Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3v Tff7b72=== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3vs Tff7b72= Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3vs Tff7b72= Tffa657StringTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3vs Tff7b72= Tffa657StringTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3vs Tff7b72= Te6edf3vsTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3vsTb4b4b4.Te6edf3length Tff7b72> T79c0ff400Tb4b4b4) Tb4b4b4{
Te6edf3vs Tff7b72= Ta5d6ff`Tffd700${Te6edf3vsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff400Tb4b4b4)Tffd700}Ta5d6ff…Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3vs Tff7b72|| Te6edf3vs Tff7b72=== Ta5d6ff"null" Tff7b72|| Te6edf3vs Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3extendedTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3keyTff7b72: Te6edf3kTb4b4b4, Te6edf3valueTff7b72: Te6edf3vs Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3extendedTb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3aTb4b4b4.Te6edf3keyTb4b4b4.Te6edf3localeCompareTb4b4b4(Te6edf3bTb4b4b4.Te6edf3keyTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3name Tff7b72&& Tff7b72!Te6edf3descriptionTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72&& Tff7b72!Te6edf3extendedTb4b4b4.Te6edf3length Tff7b72&& Tff7b72!Te6edf3iconSrcTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3geom Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3geomType Tff7b72= Te6edf3geom Tff7b72? Te6edf3geomTb4b4b4.Te6edf3getTypeTb4b4b4(Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3geomTypeTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3descriptionTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3descriptionIsHtmlTff7b72: Tff7b72falseTb4b4b4,
Te6edf3iconSrcTff7b72: Tff7b72nullTb4b4b4,
Te6edf3extendedTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3keyTff7b72: Ta5d6ff"geometry_type"Tb4b4b4, Te6edf3valueTff7b72: Te6edf3geomType Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{
Te6edf3nameTb4b4b4,
Te6edf3descriptionTb4b4b4,
Te6edf3descriptionIsHtmlTff7b72: Tffa657BooleanTb4b4b4(Te6edf3descriptionTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72&& Te6edf3looksLikeHtmlTb4b4b4(Te6edf3descriptionTb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3iconSrcTff7b72: Te6edf3iconSrc Tff7b72? Tffa657StringTb4b4b4(Te6edf3iconSrcTb4b4b4) Tff7b72: Tff7b72nullTb4b4b4,
Te6edf3extendedTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────